﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using vudu.Presentacion.Contrato.VU_03_Gestionar_Pensum_por_Escuela;
using vudu.Logica.Fachada;
using vudu.ClasesDominio;
using System.Web.UI.WebControls;
using System.Data;

namespace vudu.Presentacion.Presentador.VU_03_Gestionar_Pensum_por_Escuela
{
    public class PresentadorReporteEstudianteSeccion
    {
        #region Atributos

        private IContratoReporteEstudianteSeccion _vista;
        private EnlaceLogico _fachada;
        private Escuela _usuarioEscuela;
        private string _rol;

        #endregion

        #region Constructor

        public PresentadorReporteEstudianteSeccion(IContratoReporteEstudianteSeccion vista)
        {
            _vista = vista;
            _fachada = (EnlaceLogico)_vista.Sesion["Fachada"];
            if (_fachada != null)
                _usuarioEscuela = (Escuela)_fachada.RolActual;
            _rol = (string)_vista.Sesion["TipoRol"];
        }
        #endregion

        #region Set y Get

        public Escuela UsuarioEscuela
        {
            get { return _usuarioEscuela; }
            set { _usuarioEscuela = value; }
        }

        public string Rol
        {
            get { return _rol; }
            set { _rol = value; }
        }

        public EnlaceLogico Fachada
        {
            get { return _fachada; }
            set { _fachada = value; }
        }

        public IContratoReporteEstudianteSeccion Vista
        {
            get { return _vista; }
            set { _vista = value; }
        }
        #endregion

        #region Metodos

        public void MostrarNombreUsuario()
        {
            Escuela esc = (Escuela)_fachada.RolActual;
            _vista.Actor.Text = _rolUsuario + _separador + esc.NombreEscuela;
        }

        /// <summary>
        /// Metodo encargadodemanejar la paginacion del gridview de pensums
        /// </summary>
        /// <param name="e"></param>
        public void Paginacion(GridViewPageEventArgs e)
        {
            this._vista.Estudiantes.PageIndex = e.NewPageIndex;
        }

        private int Diferencia(int totalFilas)
        {
            int diferencia = 0;
            if (totalFilas < _numeroFilas)
            {
                diferencia = _numeroFilas - totalFilas;
            }
            return diferencia;
        }

        private void CargarTablaEstudiante(List<Estudiante> estudiante)
        {

            DataTable table = new DataTable();
            table.Columns.Add("Cedula", typeof(string));
            table.Columns.Add("Nombre", typeof(string));

            int diferencia = Diferencia(estudiante.Count);

            foreach (Estudiante estudiantes in estudiante)
            {
                int idPensum = estudiantes.IdEst;
                if (idPensum != 0)
                {
                    table.Rows.Add(estudiantes.Cedula, estudiantes.Nombre + " " + estudiantes.Apellido);

                }
            }
            this._vista.Estudiantes.DataSource = table;
            this._vista.Estudiantes.DataBind();

        }

        public void ConsultarMaterias()
        {
            List<Materia> ListaMateria = new List<Materia>();
            ListaMateria = _fachada.ConsultarMateriaEscuelaG3(_usuarioEscuela.IdEscuela);
            _vista.Materia.DataSource = ListaMateria;
            _vista.Materia.DataTextField = "Nombre";
            _vista.Materia.DataValueField = "Codigo";
            _vista.Materia.DataBind();
        }

        public void ConsultarSecciones()
        {
            List<SeccionMateria> ListaSeccion = new List<SeccionMateria>();
            ListaSeccion = _fachada.ConsultarMateriaSeccionG3(int.Parse(_vista.Materia.SelectedValue));
            _vista.Seccion.DataSource = ListaSeccion;
            _vista.Seccion.DataTextField = "Codigo";
            _vista.Seccion.DataValueField = "IdSeccionMateria";
            _vista.Seccion.DataBind();
        }

        public void ConsultarEstudiante()
        {
            List<Estudiante> miLista = new List<Estudiante>();
            miLista = _fachada.ConsultarEstudiantesSeccion(int.Parse(_vista.Seccion.SelectedValue));
            this.CargarTablaEstudiante(miLista);
        }

        #endregion

        #region Constantes

        private const int _numeroFilas = 8;
        private const string _separador = ": ";
        private const string _rolUsuario = "Escuela";
        #endregion
    }
}